package com.jeesite.modules.form.entity;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;

import com.jeesite.common.entity.DataEntity;
import com.jeesite.common.mybatis.annotation.Column;
import com.jeesite.common.mybatis.annotation.Table;
import com.jeesite.common.mybatis.mapper.query.QueryType;

/**
 * 表单配置Entity
 * @author 码脑洞
 * @version 2025-04-13
 */
@Table(name="t_form", alias="a", label="表单配置信息", columns={
		@Column(name="auto_id", attrName="autoId", label="主键", isPK=true),
		@Column(name="org_id", attrName="orgId", label="组织ID", isQuery=false),
		@Column(name="org_code", attrName="orgCode", label="组织编码", isQuery=false),
		@Column(name="org_name", attrName="orgName", label="组织名称", isQuery=false),
		@Column(name="form_category_id", attrName="formCategoryId", label="表单类别ID", isQuery=false),
		@Column(name="form_code", attrName="formCode", label="表单编码"),
		@Column(name="form_name", attrName="formName", label="表单名称", queryType=QueryType.LIKE),
		@Column(name="bill_no", attrName="billNo", label="编码字段，来源表单系统字段", isQuery=false),
		@Column(name="form_type", attrName="formType", label="表单类型", comment="表单类型：1. 基础档案类 2. 单据类", isQuery=false),
		@Column(name="is_approval", attrName="isApproval", label="是否支持审批", comment="是否支持审批：0. 否 1. 是", isUpdate=false, isQuery=false),
		@Column(includeEntity=DataEntity.class),
	}, orderBy="a.update_date DESC"
)
public class Form extends DataEntity<Form> {
	
	private static final long serialVersionUID = 1L;
	private Long autoId;		// 主键
	private Long orgId;		// 组织ID
	private String orgCode;		// 组织编码
	private String orgName;		// 组织名称
	private Long formCategoryId;		// 表单类别ID
	private String formCode;		// 表单编码
	private String formName;		// 表单名称
	private String billNo;		// 编码字段，来源表单系统字段
	private String formType;		// 表单类型：1. 基础档案类 2. 单据类
	private String isApproval;		// 是否支持审批：0. 否 1. 是

	public Form() {
		this(null);
	}
	
	public Form(String id){
		super(id);
	}
	
	@JsonSerialize(using = ToStringSerializer.class)
	public Long getAutoId() {
		return autoId;
	}

	public void setAutoId(Long autoId) {
		this.autoId = autoId;
	}
	
	@NotNull(message="组织ID不能为空")
	public Long getOrgId() {
		return orgId;
	}

	public void setOrgId(Long orgId) {
		this.orgId = orgId;
	}
	
	@NotBlank(message="组织编码不能为空")
	@Size(min=0, max=10, message="组织编码长度不能超过 10 个字符")
	public String getOrgCode() {
		return orgCode;
	}

	public void setOrgCode(String orgCode) {
		this.orgCode = orgCode;
	}
	
	@NotBlank(message="组织名称不能为空")
	@Size(min=0, max=30, message="组织名称长度不能超过 30 个字符")
	public String getOrgName() {
		return orgName;
	}

	public void setOrgName(String orgName) {
		this.orgName = orgName;
	}
	
	@NotNull(message="表单类别ID不能为空")
	public Long getFormCategoryId() {
		return formCategoryId;
	}

	public void setFormCategoryId(Long formCategoryId) {
		this.formCategoryId = formCategoryId;
	}
	
	@NotBlank(message="表单编码不能为空")
	@Size(min=0, max=30, message="表单编码长度不能超过 30 个字符")
	public String getFormCode() {
		return formCode;
	}

	public void setFormCode(String formCode) {
		this.formCode = formCode;
	}
	
	@NotBlank(message="表单名称不能为空")
	@Size(min=0, max=100, message="表单名称长度不能超过 100 个字符")
	public String getFormName() {
		return formName;
	}

	public void setFormName(String formName) {
		this.formName = formName;
	}
	
	@Size(min=0, max=10, message="编码字段，来源表单系统字段长度不能超过 10 个字符")
	public String getBillNo() {
		return billNo;
	}

	public void setBillNo(String billNo) {
		this.billNo = billNo;
	}
	
	@Size(min=0, max=10, message="表单类型长度不能超过 10 个字符")
	public String getFormType() {
		return formType;
	}

	public void setFormType(String formType) {
		this.formType = formType;
	}
	
	@Size(min=0, max=1, message="是否支持审批长度不能超过 1 个字符")
	public String getIsApproval() {
		return isApproval;
	}

	public void setIsApproval(String isApproval) {
		this.isApproval = isApproval;
	}
	
}